/* 
 * 一些常用的JS进行封装,一般使用
 * @author flyten
 */

/**
 * 存在的方法有: 
 *      字符串处理:
 *              Trim,LTrim,RTrim,ulength,cnStringToAscii,cnStringToUnicode，
 *              charCodeToCnString，asciiToCnString，unicodeToCnString
 *      验证操作:validEmail,validCN,validNum
 *      限制类: LimitNum,LimitCN,LimitEN
 */

/**
 *限制只输入汉字,过滤掉不是汉字的部分
 */
String.prototype.LimitCN = function(){
  return this.replace(/[^\u4e00-\u9fa5]+/g,'');
}

/**
 *显示输入的只能是英文字母,过滤掉不是英文字母的部分
 */
String.prototype.LimitEN = function(){
  return this.replace(/[^a-zA-z]/g, '');
}

/**
 *限制只输入数字
 */
String.prototype.LimitNum = function(){
  return this.replace(/[^\d]/g,'');
}

/**
 *验证是否为数字
 */
String.prototype.validNum = function(){
  if( this.match(/[\d]/) ){
    return true;
  }else{
    return false;
  }
}

/**
 *验证是否为汉字
 */
String.prototype.validCN = function(){
  var preg = /[\u4e00-\u9fa5]+/;//汉字规则
  if( this.match(preg) ){
    return true;
  }else{
    return false;
  }
}

/**
 *验证是否为邮箱格式
 */
String.prototype.validEmail = function(){
  if( this.match(/^([a-zA-Z0-9]+[_|\_|\.]?)*[a-zA-Z0-9]+@+(\w)+\.+(\w){2,3}$/) ){
    return true;
  }else{
    return false;
  }
}
/**
 * 去除字符串的中间空格
 */
String.prototype.Trim = function() {
   return this.replace(/(^\s*)|(\s*$)/g, "");
}

/*
 * 去除字符串左侧空格
 */
String.prototype.LTrim = function() {
  return this.replace(/(^\s*)/g, "");
}

/*
 * 去除字符串右侧空格
 */
String.prototype.RTrim = function() {
  return this.replace(/(\s*$)/g, "");
}


String.prototype.ulength = function () {
  var c = 0;
  var b = 0;
  var l = this.length;
  while(l) {
    c = this.charCodeAt(-l);
    b += (c < 128) ? 1 : ((c < 2048) ? 2 : ((c < 65536) ? 3 : 4));
  };
  return b;
}

/*
 *汉字转换ascii
 */
String.prototype.cnStringToAscii = function() {
  return escape(this).replace(/%u/g, "\&#x");
};

/*
 * 汉字转换unicode
 */
String.prototype.cnStringToUnicode = function() {
  return escape(this).replace(/%/g, '\\');
};

String.charCodeToCnString = function(charCodes, regexp) {
  return charCodes.replace(regexp, function($0, $1, $2) {
    return String.fromCharCode(
    parseInt($2, 16)/*把16进制的字符串转换成int型数字*/
  );
  });
};

/**
 * ascii转换成汉字
 */
String.asciiToCnString = function(asciiChars) {
  return String.charCodeToCnString(asciiChars, /(\&#x)(\w{4})/gi);
};

//unicode转换成汉字，高效的..
String.unicodeToCnString = function(unicodeChars) {
  
  return unicodeChars + '';//虽然它已经是String类型，但再这样转换成String类型，居然直接变汉字了。
  //unicodeChars.split(‘\\u’)[0];split也可以变成汉字，可以用任意’非中文字符’来split，如’\\’,'safdasf’等等。
  //unicodeChars.split(”).join(”);//也是可以的，这样每个字都成为数组的一个元素，与上一句一样
  //return String.charCodeToCnString(unicodeChars, /(\&#x)(\w{4})/gi); 这个效率最差
};



